1. A Method and System For Using Dynamically Generated Code to Perform Record Management Layer Functions in a Relational Database Manager invented by David S. Edwards, David A. Egolf and William L. Lawrance, filed on even date, bearing Ser. No. 09/408,985 and assigned to the same assignee as named herein.
2. A Method and System For Using Dynamically Generated Code to Perform Index Record Retrieval in Certain Circumstances in a Relational Database Manager invented by David S. Edwards and Todd Kneisel, filed on even date, bearing Ser. No. 09/408,986 and assigned to the same assignee as named herein.
1. Field of Use
The present invention relates to data processing systems and more particularly to database management systems.
2. Prior Art
Typically, today""s enterprise or legacy systems store large quantities of data in database systems accessed by database management system (DBMS) software. In such database systems, data is logically organized into relations or tables wherein each relation can be viewed as a table where each row is a tuple and each column is a component of the relation designating an attribute. It has become quite common to use relational database management systems (RDMS) for enabling users to enter queries derived from a database query language, such as SQL, into the database in order to obtain or extract requested data.
In compiling type database management systems, an application program containing database queries is processed for compilation prior to run time. This can be done and more frequently is done at run time by users of the INTEREL product discussed herein. Users of other database products such as DB2, do such processing prior to run time.
During compilation, database queries are passed to the database management system for compilation by a database management system compiler. The compiler translates the queries contained in the application program into machine language. Generally, a database compiler component referred to, as a query optimizer is included in the database management system to select the manner in which queries will be processed. The reason is because most users do not input queries in formats that suggest the most efficient way for the database management system to address the query. The query optimizer component analyzes how best to conduct the user""s query of the database in terms of optimum speed in accessing the requested data. That is, the optimizer typically transforms a user query into an equivalent query that can be computed more efficiently. This operation is performed at compile time, in advance of execution.
A major component of the RDBMS is the database services component or module that supports the functions of SQL language, such as definition, access control, retrieval and update of user and system data. Such components may utilize a multilayer structure containing submodules or components for carrying out the required functions. For example, one such system includes a series of components or conceptually, a series of layers for carrying out the required functions for accessing data from the relational database. More specifically, a first layer functions as a SQL director component that handles requests at the interface to the requesting or calling application program. A second layer consists of two major components, an optimizer for optimizing the query and a RAM code generation component. The optimizer processes the query by determining the appropriate access plan strategy. The code generation component generates code according to such plan for accessing and processing the requested data. The access plan defines the type of access to each table, order of access, whether any sorts or joins are performed along with other related information.
The generated code calls a third layer that functions as a relational file manager (RFM) component. This component layer performs the relational file processing function of translating the code-generated requests into I/O file read/write requests. A fourth layer that functions as an 10 Controller performs the requested I/O operation designated by such I/O file requests that results in reading/writing the relational database files in page increments. The described architecture is characteristic of the INTEREL product developed and marketed by Bull HN Information Systems Inc. For information concerning this product, reference may be made to the publication entitled, xe2x80x9cDatabase Products INTEREL Reference Manual INTEREL Performance Guidelines, Copyright, 1996 by Bull HN Information Systems Inc., Order No. LZ93 Rev01B.
It has been found that while the above architecture provides design advantages, it tends to slow down relational data access performance. More specifically, the relational retrieval process involves the execution of functions by a series of components or layers that can result in decreased performance. This is the case particularly when the RDMS is required to access non-partitioned (i.e., single page) data rows and perform index record retrieval operations.
Accordingly, it is a primary object of the present invention to provide a more efficient method and system for improving relational data access performance.
The above objects are achieved in a preferred embodiment of the present invention that can be utilized in a relational database management System (RDMS) that implements the Structured Query Language (SQL) standard. The present invention is a system and method that enhances the data access performance of a multi-layer relational database manager. According to the teachings of the invention, the code generation component layer of the database manager is expanded to include a number of performance enhancing subroutines designed to execute functions performed by lower component layers substantially faster than if the functions were executed by such lower component layers. Each such subroutine includes logic for establishing the conditions under which the particular subroutine is invoked during the processing of a SQL request. The different types of performance enhancing subroutines are described in the above-related patent applications.
According to the teachings of the present invention, during process of generating code for a specific SQL query, the code generation component inserts calls to the different performance enhancing subroutines in place of normally included calls to lower component layers. This results in the insertion of the different performance enhancing subroutines into the generated code. In the preferred embodiment, such routines enable the dynamically generated code to perform lower component layer record management functions based on the characteristics of the original query statement resulting in increased performance. For example, record management functions that are normally performed by the system""s relational file manager component. Hence, when the generated SQL query code is being executed and accesses the predetermined type of data file record, the performance enhanced subroutine is executed in lieu of calling lower component layers to perform the required record file processing. By eliminating or bypassing such other layers, relational data access performance is substantially increased.
The present invention by incorporating the required record management functions into the code generated to execute the SQL query can be easily implemented without having to make changes to the other components/layers of the relational database manager.
The above objects and advantages of the present invention will be better understood from the following description when taken in conjunction with the accompanying drawings.